#include <wx/window.h>
#include "CameraDriver.h"

class DeviceMsgEvent : public wxEvent
{
public:
    DeviceMsgEvent(wxEventType eventType, int winid, int deviceID, CameraMessageType msg, int value)
        : wxEvent(winid, eventType), _deviceID(deviceID), _msg(msg), _value(value)
    {
    }
    int GetDeviceID() { return _deviceID; }
    CameraMessageType GetCameraMessageType() { return _msg; }
    int GetValue() { return _value; }
    // implement the base class pure virtual
    virtual wxEvent* Clone() const { return new DeviceMsgEvent(*this); }
private:
    const int _deviceID;
    const CameraMessageType _msg;
    const int _value;
};

wxDECLARE_EVENT(EVT_DEVICEMSGE, DeviceMsgEvent);

class MsgHandle
{
public:
	MsgHandle(wxEvtHandler* handler, int ID);
	void operator()(CameraMessageType msgType, int value);
private:
	wxEvtHandler* EvtHandler;
	int ID;
};